package com.demo.dao;

import java.sql.SQLException;
import java.util.List;

import org.hibernate.HibernateException;

import com.demo.otherbeans.PagesBean;

public interface HibernateBaseDao {

	
	/*
	 * 获取连接数据库类型：oracle、mysql...
	 */
	public String getDatabaseType() throws HibernateException, SQLException;
	
	public PagesBean getPageBySql(String hql,int currentPage,int pageSize,int rowCount);
	
	/**
	 * hql查询分页数据
	 * @param hql  
	 * @param currentPage 当前页
	 * @param pageSize    页面显示条数
	 * @return
	 */
	public PagesBean getPageByHql(String hql,int currentPage,int pageSize,int rowCount);
	
	/**
	 * 新增数据
	 * @param object bean对象
	 */
	public void saveEntity(Object entity);
	
	/**
	 * 更新数据
	 * @param object bean对象
	 */
	public void updateEntity(Object entity);
	
	public List findByHql(String hql);
	
	/**
	 * 查询所有数据.
	 * 
	 * @param className 需要查询的表(表实体类名)
	 * @return          返回查询结果list
	 */
	public List getAll(String className);
	

	
	
	/**
	 * 通过sql语句的查询.
	 * 
	 * @param sql  传入的sql语句
	 * @return 返回的结果集
	 */
	
	public List findBySql(String sql);
	

	
	/**
	 * 自定义的密码加密方法.
	 * 
	 * @param key 加密使用的密匙(翼机通平台使用密钥为 www.huliye.com)
	 * @param S   需要加密的密文
	 * @return    返回加密结果String
	 */
	public String XorEnCode(String key,String S);
	
	/**
	 * 自定义的密码解密方法.
	 * 
	 * @param key 解密使用的密匙(翼机通平台使用密钥为 www.huliye.com)
	 * @param S   需要解密的密文
	 * @return    返回解密结果String
	 */
	public String XorDeCode(String key,String S);
	

	
	
	/**
	 * 待条件查询数据库总计录数.
	 * 
	 * @param className 表实体类名
	 * @param name      条件字段名称
	 * @param value     字段的值
	 * @return          返回总记录数
	 */
	public int getCountByHql(String hql);
	
	public int getCountBySql(String sql);
	
	
	/**
	 * 执行任意sql语句返回结果集.
	 * 
	 * @param sql the sql
	 * @return 返回结果集
	 */
	public List getList(String sql);
	 
	/**
	 * 执行新增或者更新sql语句
	 * @param sql
	 * @throws SQLException  
	 */
	public void executeInsOrUpdateSql(String sql) throws SQLException;
	
}
